package com.atguigu.spzx.manager.utils;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;

import java.util.Collections;
import java.util.List;

/**
 * @Author：tzl
 * @Date：2024/1/31 16:20
 * @description: 分页
 */
public class PageUtils {
    /**
     * 将列表转换为分页对象
     *
     * @param list 完整的数据列表
     * @param pageNum 当前页码，从1开始
     * @param pageSize 每页显示的数据量
     * @return 分页对象
     */
    public static  <T> Page<T> listToPage(List<T> list, int pageNum, int pageSize) {
        int total = list.size();
        int start = (pageNum - 1) * pageSize;
        int end = Math.min(start + pageSize, total);

        if (start > total) {
            // 如果开始位置超出了列表范围，返回空列表
            return new Page<T>(pageNum, pageSize, total, false);
        }

        List<T> pageList = list.subList(start, end);
        Page<T> page = new Page<>(pageNum, pageSize, total);
        page.setRecords(pageList);
        return page;
    }
}
